The present invention relates generally to image management in a computer system and, more particularly, to techniques for efficiently managing and processing bitmap information stored in such systems.
With the advent of the personal computer, the use of computer systems is becoming increasingly prevalent in everyday life. In the past, computers were often housed in highly restricted areas, with access limited to a few computer scientists and programmers. Today, however, computers can be seen on the desktops of most business professionals. Running software applications such as word processors and spreadsheets, for example, even the average business professional can realize substantial productivity gains. Besides the business environment, computers can also be found in wide use both at home and at school.
With increasingly widespread availability of powerful microprocessors, graphical user interfaces (GUIs, pronounced "gooeys") have become feasible. A GUI is a type of display format that enables a user to operate a computer by pointing to pictorial representations, such as "icons" (bitmaps) and "pull down" menus, displayed on a screen device. Choices are generally selected by the user with a keyboard and/or pointing device; the latter including such well-known devices as a mouse, track ball, digitizing tablet, light pen, or the like. Thus, the need for the user to memorize special commands has been lessened by the ability to operate a computer by selecting screen objects.
Well-known GUIs include Apple's Macintosh (Mac) interface, Microsoft's Windows, IBM's OS/2 Presentation Manager, Sun Microsystem's Open Look, and Open Software Foundation's Motif. Employing one or more windows, a menu bar, and a screen pointer, each of these systems can be readily distinguished from almost any non-GUI system. The screen cursor or pointer, typically displayed as a small arrow icon (bitmap), allows the user to select individual points on the screen. In operation, the screen cursor moves to a desired screen location in response to movements of a pointing device (e.g., mouse) by the user. Besides movement, most pointing devices include one or more switches or "mouse buttons" for specifying additional user input or "user events." For example, a user may select a screen point by "clicking" (depressing and releasing) a mouse button once while the cursor is positioned at the desired point. By double-clicking (two mouse clicks in rapid succession) a user may select an item and start an action. By "dragging" (continually depressing a mouse button) the user may move objects on the screen or select groups of objects. Thus, objects can be picked up, moved, and directly manipulated with a versatility that is not possible with a keyboard alone. Moveover, pointing is a very natural, human action which, unlike a keyboard, does not require any special training to master.
Software user interfaces rely heavily on bitmaps for rendering screen elements, such as buttons, icons, glyphs, and the like. Consider a typical user interface, as FIG. 1 depicts. Shown is a window interface 100 which includes a multitude of additional screen elements, each of which is rendered by a bitmap. For instance, task, minimize, and maximize screen buttons 101, 102, 103 are each derived from a particular bitmap. Notice the row of bitmap buttons or "toolbar" 110; again, each glyph of the button is the runtime appearance of a predefined bitmap. The window 100 may include additional windows, such as "Confirmation" dialog box; each "child" window may include in turn additional interior glyphs, such as buttons 120. All told, today's user interfaces depend, to a large extent, on bitmaps for their appearance. Thus, an important task in the design and construction of modern-day software programs is the management and processing of bitmaps.
By way of review, it is helpful to understand conventional methods by which bitmaps are employed in software development. Bitmaps and other "resources" (e.g., icon, menu, dialog, string, and the like) are typically stored in a special part of the program or executable file called the resource section. This is typically done during the "link" phase of program creation, when the object modules (i.e., source code which has been compiled into "object code") defining the program are combined or linked with other object modules, libraries, and resource files for creating the final binary image which defines the program. Each resource file used in the link is typically a binary file created by compiling one or more files which define bitmaps, icons, menus, dialogs, strings, and the like.
The general topic of resources is well covered by the technical, trade, and patent literature. For a detailed introduction to resources, including bitmaps, the reader may consult Petzold, C., Programming Windows, Second Ed., Microsoft Press, 1990. Additional treatment of the topic may be found in Petzold, C., Programming the OS/2 Presentation Manager, Section Four: Using Resources, Microsoft Press, 1989. The descriptions of the foregoing are hereby incorporated by reference. Development systems for compiling files into binary resources files (for binding to executables) are available from a variety of software development vendors, including Borland International of Scotts Valley, Calif., Microsoft Corp. of Redmond, Wash., and Symantec Corp. of Cupertino, Calif.
Of particular interest to the present invention are the problems attendant with storage and management of these bitmap resources. Conventionally, each resource bitmap file contains but a single image. Consequently, even the most modest of applications can accumulate a large number of bitmaps. The simple interface shown in FIG. 1, for instance, requires no fewer than fifteen bitmaps. Commercial programs of today, being far more complex than the interface of FIG. 1, require management of dozens or even hundreds of bitmap files. Bitmap management for these programs becomes an arduous task.
System and methods are needed for managing multiple bitmap images in a single bitmap resource, thereby reducing the number of bitmap files and easing the manipulation of these resources. The present invention fulfills these and other needs.